$().ready(function () {
    $.ajax({
        // 获取id，challenge，success（是否启用failback）
        url: serverUrl + 'basicUser/startCaptcha?time=' + (new Date()).getTime(), // 加随机数防止缓存
        type: "get",
        dataType: "json",
        xhrFields: {
            withCredentials: true
        },
        success: function (result) {
            // 使用initGeetest接口
            // 参数1：配置参数
            // 参数2：回调，回调的第一个参数验证码对象，之后可以使用它做appendTo之类的事件
            var data = $.parseJSON(result.data);
            initGeetest({
                gt: data.gt,
                challenge: data.challenge,
                product: "float", // 产品形式，包括：float，embed，popup。注意只对PC版验证码有效
                offline: !data.success, // 表示用户后台检测极验服务器是否宕机，与SDK配合，用户一般不需要关注
                width: '100%'
            }, handlerPopup);
        }
    });
    var validateFn = function (msgText) {
        $("#msg").css("display", "table").html(msgText);
        $("#msg").fadeOut(300);
        $("#msg").fadeIn(300);
    };

    var handlerPopup = function (captchaObj) {
        if (captchaObj) {
            captchaObj.appendTo("#login-yz");
            $("#login").click(function () {
                var username = $('#username').val();
                if (username == '') {
                    validateFn("请输入用户名.")
                    return;
                }
                var password = $('#password').val();
                if (password == '') {
                    validateFn("请输入密码.");
                    return;
                }
                // 先校验是否点击了验证码
                var validate = captchaObj.getValidate();
                if (!validate) {
                    validateFn("请先完成验证.");
                    return;
                }

                //登录
                loginFn(username, password, validate, captchaObj, function (result) {
                    validateFn(result);
                });

                //判断是否选中复选框，如果选中，添加cookie
                if ($("#jz").is(":checked")) {
                    //添加cookie
                    saveCookie(username, password);
                }
            });
        }else{
            validateFn("请完成验证...");
        }
    };
    //保存cookie
    var saveCookie = function (username, pwd) {
        var time = 7;
        //默认有效期7
        $.cookie("login_code", username, {expires: time});//调用jquery.cookie.js中的方法设置cookie中的用户名
        $.cookie("pwd", $.base64.encode(pwd), {expires: time});//调用jquery.cookie.js中的方法设置cookie中的登陆密码，并使用base64（jquery.base64.js）进行加密
        $.cookie("checked", true, {expires: time});
    }, clearAutoLogin = function () {
        //取消自动登录
        $.cookie("login_code", "", {expires: -1});//调用jquery.cookie.js中的方法设置cookie中的用户名
        $.cookie("pwd", "", {expires: -1});//调用jquery.cookie.js中的方法设置cookie中的登陆密码，并使用base64（jquery.base64.js）进行加密
        $.cookie("checked", "", {expires: -1});
    }, checkAutoLogin = function () {
        //检查是否自动登录
        if ($.cookie("checked")) {
            $("#jz").attr("checked", true);
            $('#username').val($.cookie("login_code"));
            $("#password").val($.base64.decode($.cookie("pwd")));
        }
    }

    $("#jz").change(function () {
        if (!$("#jz").is(":checked")) {
            clearAutoLogin();
        }
    });

    checkAutoLogin();
});

//登录
function loginFn(username, password, validate, captchaObj, callback) {
    $.ajax({
        type: 'post',
        url: serverUrl + 'basicUser/login',
        data: {
            uname: username,
            pwd: password,
            geetest_challenge: validate.geetest_challenge,
            geetest_validate: validate.geetest_validate,
            geetest_seccode: validate.geetest_seccode
        },
        xhrFields: {
            withCredentials: true
        },
        dataType: 'json',
        success: function (result) {
            if (result.success == true) {
                callback("正在登录,请稍等....");
                builderUser();
            } else {
                callback(result.msg);
                captchaObj.reset();
            }
        }
    });
}

//构建用户权限
function builderUser() {
    $.ajax({
        type: 'post',
        url: serverUrl + 'basicUser/index',
        dataType: 'json',
        xhrFields: {
            withCredentials: true
        },
        success: function (result) {
            if (result.success == true) {
                if (JDEBUG == true) {
                    window.location = 'resource/index_debug.html';
                } else {
                    window.location = 'resource/index.html';
                }
            } else {
                $("#showMsg").show();
                $("#showMsg span").html(result.msg);
            }
        }
    });

}

function setCookie() { //设置cookie
    var loginCode = $("#login_code").val(); //获取用户名信息
    var pwd = $("#login_password").val(); //获取登陆密码信息
    var checked = $("[name='checkbox']:checked");//获取“是否记住密码”复选框

    if (checked) { //判断是否选中了“记住密码”复选框
        $.cookie("login_code", loginCode);//调用jquery.cookie.js中的方法设置cookie中的用户名
        $.cookie("pwd", $.base64.encode(pwd));//调用jquery.cookie.js中的方法设置cookie中的登陆密码，并使用base64（jquery.base64.js）进行加密
    } else {
        $.cookie("pwd", null);
    }
}

function getCookie() { //获取cookie
    var loginCode = $.cookie("login_code"); //获取cookie中的用户名
    var pwd = $.cookie("pwd"); //获取cookie中的登陆密码
    if (pwd) {//密码存在的话把“记住用户名和密码”复选框勾选住
        $("[name='checkbox']").attr("checked", "true");
    }
    if (loginCode) {//用户名存在的话把用户名填充到用户名文本框
        $("#login_code").val(loginCode);
    }
    if (pwd) {//密码存在的话把密码填充到密码文本框
        $("#login_password").val($.base64.decode(pwd));
    }
}
